/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package tp01;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 *
 * @author Marian
 */
public class Catalogue {

    protected String nomFichier;
    public List<Produit> lesProduits;

    public Catalogue(String nomFichier) {
        this.nomFichier = nomFichier;
        this.lesProduits = new LinkedList<Produit>();
        //lecture du fichier texte

        try {
            InputStream ips = new FileInputStream(this.nomFichier);
            InputStreamReader ipsr = new InputStreamReader(ips);
            BufferedReader br = new BufferedReader(ipsr);
            String ligne;

            while ((ligne = br.readLine()) != null) {
                String espace = "[ ]+";
                String[] attributProduit = ligne.split(espace);
                int uneRef = Integer.parseInt(attributProduit[0]);
                String unNom = (attributProduit[1]);
                double unPrix = Double.parseDouble(attributProduit[2].replaceAll(",", "."));
                int uneQuantite = Integer.parseInt(attributProduit[3]);
                double uneTVA = Double.parseDouble(attributProduit[4].replaceAll(",", "."));

                Produit p1 = new Produit(uneRef, unNom, unPrix, uneQuantite, uneTVA);
                this.lesProduits.add(p1);
                    //for (int j = 0; j < attributProduit.length; j++) {
                //    System.out.println(attributProduit[j]);

                //}
            }
            br.close();
        } catch (Exception e) {
            System.out.println(e.toString());
        }
    }

    public void printContenu() {
        for (int i = 0; i < lesProduits.size(); i++) {
            System.out.println(lesProduits.get(i).toString());
        }
    }

    public void actualiserStock(Map<Integer, Integer> commandesJour) {
        Integer ref;
        Integer cmde;
        Iterator i = commandesJour.keySet().iterator();
        while (i.hasNext()) {
            ref = (Integer) i.next();
            cmde = commandesJour.get(ref);
            for (int j = 0; j < this.lesProduits.size(); j++) {
                Integer ref2 = this.lesProduits.get(j).uneRef;
                if (ref2.equals(ref)) {
                    this.lesProduits.get(j).retireStock(cmde);
                    System.out.println("MAJ ok");
                }
            }

        }

    }

    public void genererNouveauFichierCatalogue(String nomFichier) {
        try {
            BufferedWriter wr = new BufferedWriter(new FileWriter(nomFichier));
            for (int i = 0; i < this.lesProduits.size(); i++) {
                wr.write(this.lesProduits.get(i).toString());
                wr.newLine();
            }
            wr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
